package algorithm.leetcode.simple;

/*
 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？
 */

/**
 * @author jack.wu
 * @version 1.0
 * @date 2020-10-07
 */
public class Question70 {

    public static void main(String[] args) {

        Question70 question = new Question70();
        int i = question.climbStairs(45);
        System.out.println(i);

    }

    /**
     * 滚动数组思想
     *
     * @param n 楼梯数
     * @return 爬到楼顶的方法数
     */
    public int climbStairs(int n) {
        int i = 0, j = 0, sum = 1;
        for (int k = 1; k <= n; k++) {
            i = j;
            j = sum;
            sum = i + j;
        }
        return sum;
    }
}
